# src/core/document_processor.py
from typing import List
from docx import Document
from .interfaces import IDocumentReader, IDocumentWriter, IQuestionSplitter
from .file_utils import clean_path

class WordReader(IDocumentReader):
    """从 Word 文档读取内容，并转换为 Markdown 格式。"""
    def read(self, file_path: str) -> str:
        cleaned_path = clean_path(file_path)
        doc = Document(cleaned_path)
        
        # 将每个段落转换为 Markdown 格式，用 --- 分隔
        # 这样每个问题就成了一个独立的 Markdown section
        markdown_sections = []
        for para in doc.paragraphs:
            text = para.text.strip()
            if text:
                # 使用 H3 标题来标记问题
                markdown_sections.append(f"### 问题\n\n{text}")
        
        return "\n\n---\n\n".join(markdown_sections)

class WordWriter(IDocumentWriter):
    """将 Markdown 格式的内容写入 Word 文档。"""
    def write(self, content: str, output_path: str):
        cleaned_path = clean_path(output_path)
        doc = Document()
        
        # 简单的实现：直接将全部内容写入
        # 更复杂的实现可以使用 markdown-it-py 等库来解析 Markdown 语法
        doc.add_paragraph(content)
        doc.save(cleaned_path)

class SimpleMarkdownSplitter(IQuestionSplitter):
    """一个简单的 Markdown 分割器，使用 '---' 作为分隔符。"""
    def split(self, content: str) -> List[str]:
        # 根据 '---' 分割问题，并过滤掉空字符串
        return [section.strip() for section in content.split('---') if section.strip()]